<?php 
namespace Common\Model;
use Hdphp\Model\Model;
/**
 *
 * 文章管理模型
 */
class Article extends Model{
	// 固定写法 操作数据库中的文章表article
	protected $table='article';
	//自动验证
	protected $validate=array(
		array('title','required','文章标题不能为空',3,3),
		array('author','required','作者不能为空',3,3),
		array('digest','required','文章摘要不能为空',3,3),
		array('keywords','required','文章关键字不能为空',3,3),
		array('tid','required','文章标签不能为空',3,3),
		);
	//自动完成
	//字段验证，1，字段名，2作用的方法或函数名，3方法类型，验证条件，验证时机
	//function 系统的方法 method自己定义的方法
	protected $auto=array(
		array('sendtime','time','function',3,1),
		array('updatetime','time','function',3,2),
		array('user_uid','user','method',3,1),
		array('thumb','image','method',3,3),

		);
	/**
	 * 自动完成方法user_uid()
	 * 验证用户ID
	 */
	public function user(){
		return $_SESSION['id'];
	}
	/**
	 *
	 * 自动完成方法  图片处理
	 */
	public function image(){
		if (isset($_POST['thumb'])) {
			return $_POST['thumb'];
		}
		// 设置图片上传的路径
		$uploadpath='Upload/'.date('ymd');
		// 没有路径就创建
		is_dir($uploadpath)||mkdir($uploadpath,0777,true);
		// 框架的上传图片方法 1.type设置类型 2.size设置图片大小 3.path设置图片上传路径
		$file=Upload::type('jpg,jpeg,png,gif')->size(2000000)->path($uploadpath)->make();
		// p($file);
		if ($file) {
			// 拼接图片存放的路径 basename返回文件的完整的名称
			$dst=$uploadpath.'/thumb_'.$file[0]['basename'];
			// 框架自带的缩略图方法 1 要修改的图片存放的目录 2输出图片存放的目录 3，4大小 5微缩的类型
			$path=Image::thumb($file[0]['path'],$dst,200,200,6);
			return $path;
		}else{
			// 如果没有上传 就返回空字符串
			return '';
		}

	}
	/**
	 *
	 * 添加文章方法
	 */
	public function store(){
		// 自动验证article表
		if(!$this->create()) return false;
		
		// 自动验证article_data表
		$arcData=new ArcData;
		if (!$arcData->create()) {
			$this->error=$arcData->getError();
			return false;
		}


		// 验证上传图片 4是图片不为空
		if ($_FILES['thumb']['error']!=4) {
			// 获取图片错误并返出
			if ($error=Upload::getError()) {
				$this->error=$error;
				return false;
			}
		}

		// 添加文章表article内容
		$aid=$this->add();
		// p($aid);die;
		//添加文章中间表article_tag内容
		$arcTag=new ArcTag;
		$arr=Q('post.tid');
		foreach ($arr as $tid) {
			$data=array(
				'article_aid'=>$aid,
				'tag_tid'=>$tid
				);
			$arcTag->add($data);
		}

		//文章内容表中没有article_aid,post没有获取到 所以要手动添加
		$arcData->data['article_aid']=$aid;
		// 添加文章内容表article_data内容
		$arcData->add();
		return true;
	}
	/**
	 *
	 * 修改文章方法
	 */
	public function edit(){
		// 自动验证article表
		if (!$this->create()) return false;
		// 自动验证article_data表
		$arcdata=new ArcData;
		if (!$arcdata->create()) {
			$this->error=$arcdata->getError();
			return false;
		}
		//验证上传图片不为空
		if (isset($_FILES['thumb']) && $_FILES['thumb']['error']!=4) {
			if ($error=Upload::getError()) {
				$this->error=$error;
			}
		}
		// 修改article表  add(),save()会返出主键的ID
		$this->save();
		$aid=$_POST['aid'];
		// 修改中间表article_tag(article表与tag表的中间表)
		// 因为是多对多的关系 太难处理 所以先删除 再添加
		$arctag=new ArcTag;
		// 删除当前要修改标签的数据库信息
		$arctag->where('article_aid',$aid)->delete();
		// 添加新的标签信息到数据库
		foreach (Q('post.tid') as $tid) {
			$arr=array(
				'article_aid'=>$aid,
				'tag_tid'=>$tid,
				);
			$arctag->add($arr);
		}
		$arcdata=new ArcData;
		// 修改内容表article_data
		$arcdata->where('article_aid',$aid)->save(array('keywords'=>$_POST['keywords'],
														'des'=>$_POST['des'],
														'content'=>$_POST['content'],));
		return true;
		
	}
	/**
	 *
	 *	从回收站彻底删除文章方法
	 */
	public function del(){
		// 获取地址栏传参$_GET['aid']
		$aid=Q('get.aid',0,'intval');
		// 删除article表(文章表)中的数据
		$this->db->where('aid',$aid)->delete();
		// 删除article_tag表(文章表和标签表的中间表)中的数据
		$arctag=new ArcTag;
		$arctag->where('article_aid',$aid)->delete();
		// 删除article_data表(文章内容表)中的数据
		$arcdata=new ArcData;
		$arcdata->where('article_aid',$aid)->delete();
		return true;
	}
}



 ?>